home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
United Public Domain Gold 2
/
United Public Domain Gold 2.iso
/
utilities
/
pu450.dms
/
pu450.adf
/
doc
/
KnownBugs
< prev
next >
Wrap
Text File
|
2014-06-18
|
3KB
|
87 lines
knownbugs/knownbugs knownbugs/knownbugs
knownbugs/KnownBugs knownbugs/KnownBugs
NOT IMPLEMENTED IN UNREGISTERED RELEASE BUT IMPLEMENTED IN REGISTERED
RELEASE:
* bit fields
* floating point
* manual pages for DICE libraries
* keywords: __chip, __far, __near
PREPROCESSOR:
(1) string-ize operator (#) does not escape contents (e.g. if there is
a quote or a backslash in the string, it is not escaped)
(2) token-pasting operator (##) resolves the paste last instead of
first. Thus, the pasted operator may not be used to represent
other macros.
MAIN COMPILER:
extern void (*signal(int, void (*)(int)))(int); doesn't work...
DCC improperly parses complex procedure pointer types. You have
to use typedef's to generate complex procedural types.
bit fields have only been partially implemented, things like
a += b; where a is a bit field do not work and comparisons
only work == 0 or != 0.
Structural return values have not been implemented yet
Auto-Initialization of auto arrays / structures. I.E.
stack aggregate initialization of arrays and structures is not
implemented yet (a new ANSI thing)
LIBRARY ROUTINES
standard qsort() not implemented yet
*scanf() routines do not understand %[...] form or %e,E,f,g (fp forms)
time routines ignore daylight savings time.
FLOATING POINT
Not all fp library calls have been implemented yet.
FLOAT -> DOUBLE -> FLOAT CONVERSION IS UNSTABLE!!!! The best thing to
do for now is to use only double's. If you want to use the float
type you must make sure that no constructions convert items to double
and then back to float. This means
* cast all fp constants to float
* prototype all functions that take a float. Otherwise said
functions will expect a double no matter what you specify for
the argument type.
* use float math library routines such as fsin() instead of sin().
Look at dinclude:Math.h for more information.
EXAMPLE:
/* if this function is not prototyped */
float
fubar(x, y)
float x, y; <- than these are really doubles
{
}
float a, b, c, d;
d = b * b - 4.0 * a * c; WRONG
d = b * b - (float)4.0 * a * c; RIGHT
Dice will perform nominal arithmatic if both arguments are floats
using floats. But if one argument is a double (like the fp
constant), then the other will be cast to a double to run the
operation and the result cast back to a float. This is unstable
currently due to the fact that I am using FFP's for floats and
IEEE's for doubles.